<?php

/**
 * Description of handleurl
 *
 * @author
 */
class HandleUrl {
    #propriedade que recebera a url quando acessar a aplicacao

    public $get_url_query;

    #propriedade que recebera o routing definido pelo sistema ou alterado pelo responsavel 
    #arquivo: config/config.php
    public $get_routing;

    //metodo construtor que ira instacia automaticamente
    //os metodos de tratamento da url
    public function __construct() {
        try {
            //-------------------------------------------------------------------------------------------------
            //Garante que a pasta do sistema(pasta admin) seja especificada(config/config.php), caso seje renomeada
            //-------------------------------------------------------------------------------------------------
            $qrstr = array_values(array_filter(explode("/", $_SERVER['REQUEST_URI']), create_function('$item', 'return (!empty($item));')));
            $this->get_routing = MAINSYSTEMFOLDER;
            $this->get_url_query = $qrstr;
            if (!array_key_exists(MAINSYSTEMFOLDER, array_flip($qrstr))) {
                if ($qrstr[0] != MAINSYSTEMFOLDER) {
                    throw new Exception("Route of system not found, please contact administrator", 0);
                }
            }
        } catch (Exception $exc) {
            exit($exc->getMessage());
        }
    }

    //-------------------------------------------------------------------------------------------------
    //Metodo que retona o nome do controloador
    //@PARAM BOOL $logged = EXISTINDO SESSAO O REDIRECIONA PARA A PAGINA INICIAL SE NAO CHAMA O LOGIN
    //return STRING
    //-------------------------------------------------------------------------------------------------
    public function callController($logged = false) {
        $url_controller = $this->manipulationURL();
        if ($logged) {
            if (!is_null($url_controller)) {
                $controller = current(explode("/", $url_controller));
            } else {
                $controller = CONTROLLERDEFAULT;
            }
        } else {
            $controller = 'login';
        }
        return $controller;
    }

    //-------------------------------------------------------------------------------------------------
    //Metodo responsavel por identificar o controlador
    //return STRING | NULL
    //-------------------------------------------------------------------------------------------------
    protected function manipulationURL() {
        $uri = null;
        $exURL = $this->get_url_query;
        $totalQuery = count($exURL);
        if ($totalQuery > 1) {
            unset($exURL[0]);
            $uri = join("/", $exURL);
        }
        return $uri;
    }
    
    /*METODO QUE RETIRA OS CARACTERES ESPECIAIS PARA CRIAR URL
     * @PARAM STRING $str 
     * RETURN STRING
     */
    public function slugStringUrl($text){
        $text = preg_replace('~[^\\pL\d]+~u', '-', $text);
        $text = trim($text, '-');
        $text = iconv('utf-8', 'us-ascii//TRANSLIT', $text);
        $text = strtolower($text);
        $text = preg_replace('~[^-\w]+~', '', $text);
        if (empty($text)){
          return 'n-a';
        }
        return $text;
    }
    
    
}
